<?php
class Exame extends Zend_Db_Table
{
    protected $_name = "exame";
	
    public function lista(array $request)
    {
	$dados = array();
		
	$select = $this->select()
			->from($this, "COUNT(*) AS qtd")
			->where("eativo = ?", 1);
	$result = $this->fetchRow($select);
		
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}

	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

	$dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
		
    
        $select = "SELECT *, CASE eObrigatorio";
	$select .= " WHEN '0' THEN 'NÃO'";
	$select .= " WHEN '1' THEN 'SIM'";
	$select .= " END AS eObrigatorio,";
        $select .= " m.nome as metodologia";
	$select .= " FROM exame e";
        $select .= " INNER JOIN metodologia m ON (e.idMetodologia = m.idMetodologia)";
        $select .= " WHERE e.eAtivo = 1";
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
	}else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
	}
        
        $resultado =  $this->_db->fetchAll($select);
	
        for($cont = 0; $cont < count($resultado); $cont++) {
            $dados['rows'][$cont]['id'] = $resultado[$cont]['idExame'];
            $dados['rows'][$cont]['cell'] = array(
                                                trim($resultado[$cont]['nomeLongo']),
						trim($resultado[$cont]['nomeCurto']),
						$resultado[$cont]['eObrigatorio'],
                                                $resultado[$cont]['metodologia'],
						$resultado[$cont]['nomeDoenca'],
						$resultado[$cont]['tipoResultado'],
						$resultado[$cont]['valorReferencia'],
						);
	}
	return $dados;
    }

    public function add($usuario, array $request)
    {
        $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND UPPER(nomeLongo) = UPPER(?)', $request['nomeLongo']);
        
        $result = $this->fetchRow($select);
        
        if(!$result){
            $dados = array(
                'idMetodologia' => $request['metodologia'],
                'nomeCurto' => $request['nomeCurto'],
                'nomeLongo' => $request['nomeLongo'],
                'nomeDoenca'=> strtoupper($request['nomeDoenca']),
                'tipoResultado' => $request['tipoResultado'],
                'valorReferencia' => $request['valorReferencia'],
                'eAtivo'  => 1,
                'eObrigatorio' => $request['eObrigatorio'],
                'idUsuCad' => $usuario
            );
            $resultado = $this->insert($dados);
            if($resultado != 0)
                return 1;
            else
                return 0;
        }
        else
            return 2;
    }
	
    public function edit($usuario, array $request)
    {
        $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND UPPER(nomeLongo) = UPPER(?)', $request['nomeLongo'])
                       ->where('idExame <> ?', $request['id']);
        
        
        $result = $this->fetchRow($select);
     
         
        if(!$result){
            $dados = array(
                'nomeLongo' => $request['nomeLongo'],
                'nomeCurto' => $request['nomeCurto'],
                'eObrigatorio' => $request['eObrigatorio'],
                'idMetodologia' => $request['metodologia'],
                'nomeDoenca'=> strtoupper($request['nomeDoenca']),
                'tipoResultado' => $request['tipoResultado'],
                'valorReferencia' => $request['valorReferencia'],
                'idUsuAtu' => $usuario
            );
            $where = $this->getAdapter()->quoteInto("idExame = ?", $request['id']);
            $resultado = $this->update($dados, $where);
            if($resultado != 0)
                return 1;
            else
                return 0;
        }
        else
            return 2;
    }	
	
    public function del($usuario, array $request)
    {
        $dados = array(
            'eativo' => 0,
            'idUsuAtu' => $usuario
	);
	$where = $this->getAdapter()->quoteInto("idExame = ?", $request['id']);
	$resultado = $this->update($dados, $where);
        if($resultado != 0)
            return 1;
        else
            return 0;
    }
    
    public function _getExame($id)
    {
	$select = $this->select()
                            ->from($this->_name)
                            ->where('idExame = ?', $id);			
	return $this->fetchAll($select);
    }
    
    public function _getListExames()
    {
	$select = $this->select()
                            ->from($this)
                            ->where('eativo = ?', 1);
        
	return $this->fetchAll($select);
    }

     public function _getExameMetodo($id)
    {
	$select = $this->select()
                            ->from($this,'idMetodologia')
                            ->where('idExame = ?', $id);
        
	return $this->fetchRow($select);
    }

    public function _getExames(array $request)
    {

	$dados = array();
		
	$select = $this->select()
			->from($this, "COUNT(*) AS qtd")
			->where("eativo = ?", 1)
                        ->order('eObrigatorio asc');
        
	$result = $this->fetchRow($select);
	  
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}
        
	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

	$dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
		
	$select = $this->select()
			->from($this)
                        ->where("eativo = ?", 1)
                        ->limit($request['rows'], $start);
	
        if($request['sidx']){
            $select->order($request['sidx'] . " " . $request['sord']);
	}
        
        
	$resultado = $this->fetchAll($select)->toArray();
	$obrig[1]='Sim';
        $obrig[0]='Não';
        
        $metodologia = new Metodologia();
       
        for($cont = 0; $cont < count($resultado); $cont++) {
             $dados['rows'][$cont]['id'] = $resultado[$cont]['idExame'];
            $dados['rows'][$cont]['cell'] = array(
                                                 $resultado[$cont]['idExame'],
                                                $resultado[$cont]['nomeLongo'],
                                                $obrig[$resultado[$cont]['eObrigatorio']],
                                                $metodologia->_getMetodologia($resultado[$cont]['idMetodologia']),
                                                null
                                                
						);
	}
	return $dados;
    }    
}